package com.dragon.modules.yuegou.model.coupon;

import com.dragon.modules.yuegou.entity.coupon.ParkApplyEntity;
import com.dragon.modules.yuegou.enums.coupon.ParkApplyStatus;
import com.dragon.modules.yuegou.enums.coupon.ParkApplyType;
import com.dragon.modules.yuegou.model.order.Order;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 停车券券申请表模型类
 *
 * @author pbuilder generated
 * @date 2021-05-11 17:09:45
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class ParkApply extends ParkApplyEntity {

	@ApiModelProperty("订单信息")
	private Order order;

	@ApiModelProperty("优惠劵标题")
	private String title;

	@ApiModelProperty("商品单价")
	private BigDecimal price;

	@ApiModelProperty("审核人")
	private String checkName;

	@ApiModelProperty("审核")
	private String merchantName;

	@ApiModelProperty("发放数量")
	private Integer granted;

	@ApiModelProperty("spuId")
	private String spuId;

	public Order getOrder() {
		return order;
	}

	public void setOrder(Order order) {
		this.order = order;
	}

	public String getSpuId() {
		return spuId;
	}

	public void setSpuId(String spuId) {
		this.spuId = spuId;
	}

	@Override
	public String getRemarks() {
		return remarks;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public BigDecimal getPrice() {
		return price;
	}

	public void setPrice(BigDecimal price) {
		this.price = price;
	}

	public String getCheckName() {
		return checkName;
	}

	public void setCheckName(String checkName) {
		this.checkName = checkName;
	}

	public String getMerchantName() {
		return merchantName;
	}

	public void setMerchantName(String merchantName) {
		this.merchantName = merchantName;
	}

	public Integer getGranted() {
		return granted;
	}

	public void setGranted(Integer granted) {
		this.granted = granted;
	}

	/**
	 * 构造一个空停车券券申请表模型对象
	 */
	public ParkApply(){
		super();
	}

	/**
	 * 依据实体对象的信息构造一个停车券券申请表模型对象
	 *
	 * @param entity 实体对象
	 */
	public ParkApply(ParkApplyEntity entity){
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个停车券券申请表模型对象
	 *
	 * @param other 其它对象
	 */
	public ParkApply(ParkApply other){
		super(other);
	}


	@Override
	public String getId() {
		return id;
	}

	/**
	 * 设置
	 *
	 * @param id
	 * @return 当前对象
	 */
	public ParkApply id(String id) {
		this.id = id;
		return this;
	}

	@Override
	public ParkApplyType getType() {
		return type;
	}

	/**
	 * 设置[枚举]券类型：0-停车券-PARK、1-优惠券-DISCOUNT
	 *
	 * @param type [枚举]券类型：0-停车券-PARK、1-优惠券-DISCOUNT
	 * @return 当前对象
	 */
	public ParkApply type(ParkApplyType type) {
		this.type = type;
		return this;
	}

	@Override
	public String getOrderNo() {
		return orderNo;
	}

	/**
	 * 设置订单号
	 *
	 * @param orderNo 订单号
	 * @return 当前对象
	 */
	public ParkApply orderNo(String orderNo) {
		this.orderNo = orderNo;
		return this;
	}

	@Override
	public String getBusdId() {
		return busdId;
	}

	/**
	 * 设置商圈ID
	 *
	 * @param busdId 商圈ID
	 * @return 当前对象
	 */
	public ParkApply busdId(String busdId) {
		this.busdId = busdId;
		return this;
	}

	@Override
	public String getMerchantId() {
		return merchantId;
	}

	/**
	 * 设置商户ID
	 *
	 * @param merchantId 商户ID
	 * @return 当前对象
	 */
	public ParkApply merchantId(String merchantId) {
		this.merchantId = merchantId;
		return this;
	}

	@Override
	public Integer getBuyNum() {
		return buyNum;
	}

	/**
	 * 设置申请购买数量
	 *
	 * @param buyNum 申请购买数量
	 * @return 当前对象
	 */
	public ParkApply buyNum(Integer buyNum) {
		this.buyNum = buyNum;
		return this;
	}

	@Override
	public Integer getCheckNum() {
		return checkNum;
	}

	/**
	 * 设置审核确认数量
	 *
	 * @param checkNum 审核确认数量
	 * @return 当前对象
	 */
	public ParkApply checkNum(Integer checkNum) {
		this.checkNum = checkNum;
		return this;
	}

	@Override
	public LocalDateTime getBeginTime() {
		return beginTime;
	}

	/**
	 * 设置有效起始时间
	 *
	 * @param beginTime 有效起始时间
	 * @return 当前对象
	 */
	public ParkApply beginTime(LocalDateTime beginTime) {
		this.beginTime = beginTime;
		return this;
	}

	@Override
	public LocalDateTime getEndTime() {
		return endTime;
	}

	/**
	 * 设置有效结束时间
	 *
	 * @param endTime 有效结束时间
	 * @return 当前对象
	 */
	public ParkApply endTime(LocalDateTime endTime) {
		this.endTime = endTime;
		return this;
	}

	@Override
	public String getApplyBy() {
		return applyBy;
	}

	/**
	 * 设置申请人
	 *
	 * @param applyBy 申请人
	 * @return 当前对象
	 */
	public ParkApply applyBy(String applyBy) {
		this.applyBy = applyBy;
		return this;
	}

	@Override
	public LocalDateTime getApplyTime() {
		return applyTime;
	}

	/**
	 * 设置申请时间
	 *
	 * @param applyTime 申请时间
	 * @return 当前对象
	 */
	public ParkApply applyTime(LocalDateTime applyTime) {
		this.applyTime = applyTime;
		return this;
	}

	@Override
	public String getCheckBy() {
		return checkBy;
	}

	/**
	 * 设置审核人
	 *
	 * @param checkBy 审核人
	 * @return 当前对象
	 */
	public ParkApply checkBy(String checkBy) {
		this.checkBy = checkBy;
		return this;
	}

	@Override
	public LocalDateTime getCheckTime() {
		return checkTime;
	}

	/**
	 * 设置审核时间
	 *
	 * @param checkTime 审核时间
	 * @return 当前对象
	 */
	public ParkApply checkTime(LocalDateTime checkTime) {
		this.checkTime = checkTime;
		return this;
	}

	@Override
	public String getCheckRs() {
		return checkRs;
	}

	/**
	 * 设置审核反馈
	 *
	 * @param checkRs 审核反馈
	 * @return 当前对象
	 */
	public ParkApply checkRs(String checkRs) {
		this.checkRs = checkRs;
		return this;
	}

	@Override
	public ParkApplyStatus getStatus() {
		return status;
	}

	/**
	 * 设置[枚举]状态：0-待提交-READY、1-待审核-UNCHECK、2-审核通过-PASS、3-审核未通过-UNPASS、4-已支付-PAYED、5-已失效-INVALID、6-预支付-PREPAID
	 *
	 * @param status [枚举]状态：0-待提交-READY、1-待审核-UNCHECK、2-审核通过-PASS、3-审核未通过-UNPASS、4-已支付-PAYED、5-已失效-INVALID、6-预支付-PREPAID
	 * @return 当前对象
	 */
	public ParkApply status(ParkApplyStatus status) {
		this.status = status;
		return this;
	}

	@Override
	public LocalDateTime getCheckBeginTime() {
		return checkBeginTime;
	}

	/**
	 * 设置审核有效起始时间
	 *
	 * @param checkBeginTime 审核有效起始时间
	 * @return 当前对象
	 */
	public ParkApply checkBeginTime(LocalDateTime checkBeginTime) {
		this.checkBeginTime = checkBeginTime;
		return this;
	}

	@Override
	public LocalDateTime getCheckEndTime() {
		return checkEndTime;
	}

	/**
	 * 设置审核有效结束时间
	 *
	 * @param checkEndTime 审核有效结束时间
	 * @return 当前对象
	 */
	public ParkApply checkEndTime(LocalDateTime checkEndTime) {
		this.checkEndTime = checkEndTime;
		return this;
	}

	@Override
	public Integer getUseNum() {
		return useNum;
	}

	/**
	 * 设置已使用数量
	 *
	 * @param useNum 已使用数量
	 * @return 当前对象
	 */
	public ParkApply useNum(Integer useNum) {
		this.useNum = useNum;
		return this;
	}

	@Override
	public Integer getInvalidNum() {
		return invalidNum;
	}

	/**
	 * 设置作废数量
	 *
	 * @param invalidNum 作废数量
	 * @return 当前对象
	 */
	public ParkApply invalidNum(Integer invalidNum) {
		this.invalidNum = invalidNum;
		return this;
	}

	@Override
	public String getSkuId() {
		return skuId;
	}

	/**
	 * 设置skuId
	 *
	 * @param skuId skuId
	 * @return 当前对象
	 */
	public ParkApply skuId(String skuId) {
		this.skuId = skuId;
		return this;
	}

	@Override
	public BigDecimal getCheckPrice() {
		return checkPrice;
	}

	/**
	 * 设置审核金额
	 *
	 * @param checkPrice 审核金额
	 * @return 当前对象
	 */
	public ParkApply checkPrice(BigDecimal checkPrice) {
		this.checkPrice = checkPrice;
		return this;
	}

	@Override
	public BigDecimal getPayCash() {
		return payCash;
	}

	/**
	 * 设置支付现金
	 *
	 * @param payCash 支付现金
	 * @return 当前对象
	 */
	public ParkApply payCash(BigDecimal payCash) {
		this.payCash = payCash;
		return this;
	}
}
